package com.love.marriage.userVirtualCallConfigInfo.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.love.marriage.userVirtualCallConfigInfo.entity.UserVirtualCallConfigInfo;
import com.love.marriage.userVirtualCallConfigInfo.mapper.UserVirtualCallConfigInfoMapper;
import com.love.marriage.userVirtualCallConfigInfo.service.UserVirtualCallConfigInfoService;
import com.love.marriage.userVirtualCallConfigInfo.vo.UserVirtualCallConfigInfoVo;
import com.love.marriage.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 * <p>
 * description:  用户接收虚拟通话配置表服务实现类
 * author:       alex
 * createDate:   2024-11-19 07:32:04
 * version:      1.0.0
 */
@Service
@RequiredArgsConstructor
public class UserVirtualCallConfigInfoServiceImp extends ServiceImpl<UserVirtualCallConfigInfoMapper, UserVirtualCallConfigInfo> implements UserVirtualCallConfigInfoService {

    private final UserVirtualCallConfigInfoMapper userVirtualCallConfigInfoMapper;

    @Override
    public Page<UserVirtualCallConfigInfoVo> getPage(Long pageNum, Long pageSize, UserVirtualCallConfigInfoVo userVirtualCallConfigInfoVo) {
        Page<UserVirtualCallConfigInfoVo> page = new Page<>(pageNum == null ? 1 : pageNum, pageSize == null ? 10 : pageSize);
        return userVirtualCallConfigInfoMapper.getPage(page, userVirtualCallConfigInfoVo);
    }

    @Override
    public UserVirtualCallConfigInfoVo queryUserVirtualCallConfigInfo(Long id) {
        return userVirtualCallConfigInfoMapper.queryUserVirtualCallConfigInfo(id);
    }

    @Override
    public UserVirtualCallConfigInfoVo queryUserVirtualCallConfigInfoByUserId(Long userId) {
        UserVirtualCallConfigInfoVo userVirtualCallConfigInfoVo = userVirtualCallConfigInfoMapper.queryUserVirtualCallConfigInfoByUserId(userId);
        if (userVirtualCallConfigInfoVo == null) {
            userVirtualCallConfigInfoVo = new UserVirtualCallConfigInfoVo();
            userVirtualCallConfigInfoVo.setUserId(userId);
            userVirtualCallConfigInfoVo.setVirtualCallFlag(true);
        }
        return userVirtualCallConfigInfoVo;
    }

    @Override
    public UserVirtualCallConfigInfoVo addVirtualCall(UserVirtualCallConfigInfoVo userVirtualCallConfigInfoVo) {
        UserVirtualCallConfigInfoVo dbVo = queryUserVirtualCallConfigInfoByUserId(userVirtualCallConfigInfoVo.getUserId());
        if (dbVo == null || dbVo.getId() == null) {
            return addUserVirtualCallConfigInfo(userVirtualCallConfigInfoVo);
        }else {
            userVirtualCallConfigInfoVo.setId(dbVo.getId());
            return updateUserVirtualCallConfigInfo(userVirtualCallConfigInfoVo);
        }
    }

    @Override
    public UserVirtualCallConfigInfoVo addUserVirtualCallConfigInfo(UserVirtualCallConfigInfoVo userVirtualCallConfigInfoVo) {
        UserVirtualCallConfigInfo userVirtualCallConfigInfo = new UserVirtualCallConfigInfo();
        BeanUtils.copyProperties(userVirtualCallConfigInfoVo, userVirtualCallConfigInfo);
        userVirtualCallConfigInfoMapper.insert(userVirtualCallConfigInfo);
        UserVirtualCallConfigInfoVo res = new UserVirtualCallConfigInfoVo();
        BeanUtils.copyProperties(userVirtualCallConfigInfo, res);
        return res;
    }

    @Override
    public UserVirtualCallConfigInfoVo updateUserVirtualCallConfigInfo(UserVirtualCallConfigInfoVo userVirtualCallConfigInfoVo) {
        UserVirtualCallConfigInfo userVirtualCallConfigInfo = new UserVirtualCallConfigInfo();
        BeanUtils.copyProperties(userVirtualCallConfigInfoVo, userVirtualCallConfigInfo);
        userVirtualCallConfigInfoMapper.updateById(userVirtualCallConfigInfo);
        return userVirtualCallConfigInfoVo;
    }

    @Override
    public Boolean deleteUserVirtualCallConfigInfo(String ids) {
        if(StringUtils.isEmpty(ids)) {
            return true;
        }
        List<String> idArr = Arrays.asList(ids.split(","));
        userVirtualCallConfigInfoMapper.deleteBatchIds(idArr);
        return true;
    }
}
